<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Desenhando - Zend Framework Manual</title>

    <link href="../css/shCore.css" rel="stylesheet" type="text/css" />
    <link href="../css/shThemeDefault.css" rel="stylesheet" type="text/css" />
    <link href="../css/styles.css" media="all" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Zend Framework</h1>
<h2>Programmer's Reference Guide</h2>
<ul>
    <li><a href="../en/zend.pdf.drawing.html">Inglês (English)</a></li>
    <li><a href="../pt-br/zend.pdf.drawing.html">Português Brasileiro (Brazilian Portuguese)</a></li>
</ul>
<table width="100%">
    <tr valign="top">
        <td width="85%">
            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.pdf.pages.html">Trabalhando com P&aacute;ginas</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.pdf.html">Zend_Pdf</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.pdf.interactive-features.html">Interactive Features</a></div>
                    </td>
                </tr>
            </table>
<hr />
<div id="zend.pdf.drawing" class="section"><div class="info"><h1 class="title">Desenhando</h1></div>
    

    <div class="section" id="zend.pdf.drawing.geometry"><div class="info"><h1 class="title">Geometria</h1></div>
        

        <p class="para">
            O <acronym class="acronym">PDF</acronym> usa a mesma geometria do PostScript. A geometria começa no
            canto inferior esquerdo da página e, por padrão, é medida em pontos (1/72 de polegada).
        </p>

        <p class="para">
            O tamanho da página pode ser recuperado de um objeto página:
        </p>

        <pre class="programlisting brush: php">
$width  = $pdfPage-&gt;getWidth();
$height = $pdfPage-&gt;getHeight();
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.color"><div class="info"><h1 class="title">Cores</h1></div>
        

        <p class="para">
            O <acronym class="acronym">PDF</acronym> possui uma poderosa capacidade para a representação de cores.
            O módulo <span class="classname">Zend_Pdf</span> dá suporte à Escala de Cinza, RGB e CMYK.
            Qualquer um deles pode ser usado em qualquer lugar onde um
            <span class="classname">Zend_Pdf_Color</span> for requisitado. As classes
            <span class="classname">Zend_Pdf_Color_GrayScale</span>,
            <span class="classname">Zend_Pdf_Color_Rgb</span> e <span class="classname">Zend_Pdf_Color_Cmyk</span>
            fornecem a seguinte funcionalidade:
        </p>

        <pre class="programlisting brush: php">
// $grayLevel (float number). 0.0 (black) - 1.0 (white)
$color1 = new Zend_Pdf_Color_GrayScale($grayLevel);

// $r, $g, $b (float numbers). 0.0 (min intensity) - 1.0 (max intensity)
$color2 = new Zend_Pdf_Color_Rgb($r, $g, $b);

// $c, $m, $y, $k (float numbers). 0.0 (min intensity) - 1.0 (max intensity)
$color3 = new Zend_Pdf_Color_Cmyk($c, $m, $y, $k);
</pre>


        <p class="para">
            O estilo de cores do <acronym class="acronym">HTML</acronym> também é fornecido na classe
            <span class="classname">Zend_Pdf_Color_Html</span>:
        </p>

        <pre class="programlisting brush: php">
$color1 = new Zend_Pdf_Color_Html(&#039;#3366FF&#039;);
$color2 = new Zend_Pdf_Color_Html(&#039;silver&#039;);
$color3 = new Zend_Pdf_Color_Html(&#039;forestgreen&#039;);
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.shape-drawing"><div class="info"><h1 class="title">Desenhando Formas</h1></div>
        

        <p class="para">
            Todas as operações de desenho podem ser feitas no contexto de uma página
            <acronym class="acronym">PDF</acronym>.
        </p>

        <p class="para">
            A classe <span class="classname">Zend_Pdf_Page</span> provê um conjunto de formas básicas para
            desenho:
        </p>

        <pre class="programlisting brush: php">
/**
 * Desenha uma linha de x1,y1 até x2,y2.
 *
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @return Zend_Pdf_Page
 */
public function drawLine($x1, $y1, $x2, $y2);
</pre>


        <pre class="programlisting brush: php">
/**
 * Desenha um retângulo.
 *
 * Tipos de preenchimento:
 * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - preenche o retângulo
 *                                             e o traço (padrão)
 * Zend_Pdf_Page::SHAPE_DRAW_STROKE          - traço do retângulo
 * Zend_Pdf_Page::SHAPE_DRAW_FILL            - preenche o retângulo
 *
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @param integer $fillType
 * @return Zend_Pdf_Page
 */
public function drawRectangle($x1, $y1, $x2, $y2,
                    $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE);
</pre>


        <pre class="programlisting brush: php">
/**
 * Desenha um retângulo arredondado.
 *
 * Tipos de preenchimento:
 * Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - preenche o retângulo
 *                                             e o traço (padrão)
 * Zend_Pdf_Page::SHAPE_DRAW_STROKE          - traço do retângulo
 * Zend_Pdf_Page::SHAPE_DRAW_FILL            - preenche o retângulo
 *
 * radius é um inteiro que representa o raio dos quatro cantos, ou uma matriz
 * de quatro números inteiros que representam o raio a partir do superior
 * esquerdo, indo no sentido horário
 *
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @param integer|array $radius
 * @param integer $fillType
 * @return Zend_Pdf_Page
 */
public function drawRoundedRectangle($x1, $y1, $x2, $y2, $radius,
                       $fillType = Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE);
</pre>


        <pre class="programlisting brush: php">
/**
 * Desenha um polígono.
 *
 * If $fillType is Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE or
 * Zend_Pdf_Page::SHAPE_DRAW_FILL, then polygon is automatically closed.
 * See detailed description of these methods in a PDF documentation
 * (section 4.4.2 Path painting Operators, Filling)
 *
 * @param array $x  - array of float (the X co-ordinates of the vertices)
 * @param array $y  - array of float (the Y co-ordinates of the vertices)
 * @param integer $fillType
 * @param integer $fillMethod
 * @return Zend_Pdf_Page
 */
public function drawPolygon($x, $y,
                            $fillType =
                                Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE,
                            $fillMethod =
                                Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING);
</pre>


        <pre class="programlisting brush: php">
/**
 * Draw a circle centered on x, y with a radius of radius.
 *
 * Angles are specified in radians
 *
 * Method signatures:
 * drawCircle($x, $y, $radius);
 * drawCircle($x, $y, $radius, $fillType);
 * drawCircle($x, $y, $radius, $startAngle, $endAngle);
 * drawCircle($x, $y, $radius, $startAngle, $endAngle, $fillType);
 *
 *
 * It&#039;s not a really circle, because PDF supports only cubic Bezier
 * curves. But very good approximation.
 * It differs from a real circle on a maximum 0.00026 radiuses (at PI/8,
 * 3*PI/8, 5*PI/8, 7*PI/8, 9*PI/8, 11*PI/8, 13*PI/8 and 15*PI/8 angles).
 * At 0, PI/4, PI/2, 3*PI/4, PI, 5*PI/4, 3*PI/2 and 7*PI/4 it&#039;s exactly
 * a tangent to a circle.
 *
 * @param float $x
 * @param float $y
 * @param float $radius
 * @param mixed $param4
 * @param mixed $param5
 * @param mixed $param6
 * @return Zend_Pdf_Page
 */
public function  drawCircle($x,
                            $y,
                            $radius,
                            $param4 = null,
                            $param5 = null,
                            $param6 = null);
</pre>


        <pre class="programlisting brush: php">
/**
 * Draw an ellipse inside the specified rectangle.
 *
 * Method signatures:
 * drawEllipse($x1, $y1, $x2, $y2);
 * drawEllipse($x1, $y1, $x2, $y2, $fillType);
 * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
 * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle, $fillType);
 *
 * Angles are specified in radians
 *
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @param mixed $param5
 * @param mixed $param6
 * @param mixed $param7
 * @return Zend_Pdf_Page
 */
public function drawEllipse($x1,
                            $y1,
                            $x2,
                            $y2,
                            $param5 = null,
                            $param6 = null,
                            $param7 = null);
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.text-drawing"><div class="info"><h1 class="title">Desenhando Texto</h1></div>
        

        <p class="para">
            As operações de desenho de texto também existem no contexto de uma página
            <acronym class="acronym">PDF</acronym>. Você pode desenhar uma linha de texto em qualquer posição da
            página ao fornecer as coordenadas x e y. A fonte, tamanho da fonte e a cor de
            preenchimento de página atuais são usadas para a operação de desenho de texto (veja a
            descrição detalhada abaixo).
        </p>

        <pre class="programlisting brush: php">
/**
 * Draw a line of text at the specified position.
 *
 * @param string $text
 * @param float $x
 * @param float $y
 * @param string $charEncoding (optional) Character encoding of source
 *               text.Defaults to current locale.
 * @throws Zend_Pdf_Exception
 * @return Zend_Pdf_Page
 */
public function drawText($text, $x, $y, $charEncoding = &#039;&#039;);
</pre>


        <div class="example" id="zend.pdf.drawing.text-drawing.example-1"><div class="info"><p><b>Example #1 Desenha uma string na página</b></p></div>
            

            <pre class="programlisting brush: php">
...
$pdfPage-&gt;drawText(&#039;Olá mundo!&#039;, 72, 720);
...
</pre>

        </div>

        <div class="example" id="zend.pdf.drawing.text-drawing.example-2"><div class="info"><p><b>Example #2 Define a cor da fonte</b></p></div>
            

            <pre class="programlisting brush: php">
...
$pdfPage-&gt;setFillColor(Zend_Pdf_Color_Html::color(&#039;#990000&#039;))
        -&gt;drawText(&#039;Hello world (in red)!&#039;, 72, 720);
....
</pre>

        </div>

        <p class="para">
            Por padrão, as strings de texto são interpretadas usando o método de decodificação e
            caracteres local. Se você tiver uma string que use um método de codificação diferente
            (como uma string UTF-8 sendo lida de um arquivo no disco, ou uma string MacRoman obtida
            de um bando de dados legado), você pode a codificação na hora de desenhar e a
            <span class="classname">Zend_Pdf</span> irá tratar a comunicação para você. Você pode fornecer
            as strings em qualquer método de codificação suportada pela função <a href="http://www.php.net/manual/function.iconv.php" class="link external">&raquo; iconv()</a> do
            <acronym class="acronym">PHP</acronym>:
        </p>

        <div class="example" id="zend.pdf.drawing.text-drawing.example-3"><div class="info"><p><b>Example #3 Desenha uma string codificada em UTF-8 em uma página</b></p></div>
            

            <pre class="programlisting brush: php">
...
// Read a UTF-8-encoded string from disk
$unicodeString = fread($fp, 1024);

// Draw the string on the page
$pdfPage-&gt;drawText($unicodeString, 72, 720, &#039;UTF-8&#039;);
...
</pre>

        </div>
    </div>

    <div class="section" id="zend.pdf.drawing.using-fonts"><div class="info"><h1 class="title">Usando fontes</h1></div>
        

        <p class="para">
            O método  <span class="methodname">Zend_Pdf_Page::drawText()</span> usa a fonte atual da página,
            que é configurada através do método  <span class="methodname">Zend_Pdf_Page::setFont()</span>:
        </p>

        <pre class="programlisting brush: php">
/**
 * Set current font.
 *
 * @param Zend_Pdf_Resource_Font $font
 * @param float $fontSize
 * @return Zend_Pdf_Page
 */
public function setFont(Zend_Pdf_Resource_Font $font, $fontSize);
</pre>


        <p class="para">
            Documentos <acronym class="acronym">PDF</acronym> suportam as fontes PostScript Type 1 e TrueType, assim
            como dois tipos especiais do <acronym class="acronym">PDF</acronym>, o Type 3 e as fontes compostas.
            Existem também 14 fontes padrão Type 1 inclusas em todos os visualizadores de
            <acronym class="acronym">PDF</acronym>: Courier (4 estilos), Helvetica (4 estilos), Times (4 estilos),
            Symbol, e Zapf Dingbats.
        </p>

        <p class="para">
            <span class="classname">Zend_Pdf</span> atualmente dá suporte às 14 fontes
            <acronym class="acronym">PDF</acronym> padrão, assim como às suas fontes personalizadas TrueType.
            Objetos do tipo Font são obtidos via um dos dois métodos fábrica:
             <span class="methodname">Zend_Pdf_Font::fontWithName($fontName)</span> para as 14 fontes padrão
            do <acronym class="acronym">PDF</acronym> ou
             <span class="methodname">Zend_Pdf_Font::fontWithPath($filePath)</span> para fontes
            personalizadas.
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-1"><div class="info"><p><b>Example #4 Criar uma fonte padrão</b></p></div>
            

            <pre class="programlisting brush: php">
...
// Create new font
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);

// Apply font
$pdfPage-&gt;setFont($font, 36);
...
</pre>

        </div>

        <p class="para">
            As constantes para as 14 fontes <acronym class="acronym">PDF</acronym> padrão são definidas na classe
            <span class="classname">Zend_Pdf_Font</span>:

            <ul class="itemizedlist">
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_COURIER</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_COURIER_BOLD</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_COURIER_ITALIC</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_COURIER_BOLD_ITALIC</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_TIMES</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_TIMES_BOLD</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_TIMES_ITALIC</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_TIMES_BOLD_ITALIC</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_HELVETICA</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_HELVETICA_BOLD</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_HELVETICA_ITALIC</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_HELVETICA_BOLD_ITALIC</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_SYMBOL</p></li>
                <li class="listitem"><p class="para">Zend_Pdf_Font::FONT_ZAPFDINGBATS</p></li>
            </ul>
        </p>

        <p class="para">
            Você também pode usar qualquer fonte individual TrueType (que normalmente possui a
            extensão &#039;.ttf&#039;) ou uma fonte OpenType (de extensão &#039;.otf&#039;) se ela contiver o mesmo
            contorno das TrueType. Atualmente sem suporte, mas planejadas para um lançamento futuro
            são os arquivos .dfont do Mac OS X e os arquivos Microsoft TrueType Collection (extensão
            &#039;.ttc&#039;).
        </p>

        <p class="para">
            Para usar uma fonte TrueType, você deve fornecer o caminho completo para a fonte. Se a
            fonte não puder ser lida por algum motivo, ou se ela não for uma fonte TrueType, o
            método fábrica irá lançar uma exceção:
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-2"><div class="info"><p><b>Example #5 Criar uma fonte TrueType</b></p></div>
            

            <pre class="programlisting brush: php">
...
// Create new font
$goodDogCoolFont = Zend_Pdf_Font::fontWithPath(&#039;/path/to/GOODDC__.TTF&#039;);

// Apply font
$pdfPage-&gt;setFont($goodDogCoolFont, 36);
...
</pre>

        </div>

        <p class="para">
            Por padrão, fontes personalizadas serão embarcadas no documento <acronym class="acronym">PDF</acronym>
            resultante. Isso permite que as pessoas que receberem o arquivo poderão visualizá-lo
            corretamente, mesmo que não possuam as fontes apropriadas instaladas em seus sistemas.
            Se você estiver preocupado com o tamanho do arquivo você pode solicitar que a fonte não
            seja incluída através de uma opção &#039;não embarque&#039; do método fábrica:
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-3"><div class="info"><p><b>Example #6 Criar uma fonte TrueType, mas não embarcá-la no documento PDF</b></p></div>
            

            <pre class="programlisting brush: php">
...
// Create new font
$goodDogCoolFont = Zend_Pdf_Font::fontWithPath(&#039;/path/to/GOODDC__.TTF&#039;,
                                               Zend_Pdf_Font::EMBED_DONT_EMBED);

// Apply font
$pdfPage-&gt;setFont($goodDogCoolFont, 36);
...
</pre>

        </div>

        <p class="para">
            Se o programa da fonte não for embarcado, mas o recebedor do arquivo
            <acronym class="acronym">PDF</acronym> tiver a fonte instalada em seu sistema ele irá ver o documento
            corretamente. Caso ele não possua a fonte correta instalada, o visualizador
            <acronym class="acronym">PDF</acronym> fará o melhor para sintetizar uma substituição.
        </p>

        <p class="para">
            Algumas fontes possuem regras de licença específicas que evitam que elas sejam
            embarcadas em documentos <acronym class="acronym">PDF</acronym>. Então, para que você não seja pego de
            surpresa por isso, se você tentar usar uma fonte que não pode ser embarcada, o método
            fábrica irá lançar uma exceção.
        </p>

        <p class="para">
            Você ainda pode usar estas fontes, mas deve passar a opção &#039;não embarque&#039; como foi
            descrito acima, ou então você pode simplesmente suprimir a exceção:
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-4"><div class="info"><p><b>Example #7 Não lançar uma exceção para fontes que não podem ser embarcadas</b></p></div>
            

            <pre class="programlisting brush: php">
...
$font = Zend_Pdf_Font::fontWithPath(
           &#039;/path/to/unEmbeddableFont.ttf&#039;,
           Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION
        );
...
</pre>

        </div>

        <p class="para">
            Esta técnica de supressão é preferível se você permitir que o usuário final escolha sua
            própria fonte. Fontes que podem ser embarcadas no documento <acronym class="acronym">PDF</acronym> vão
            ser; aquelas que não puderem, não serão.
        </p>

        <p class="para">
            Programas de fonte podem ser um tanto grandes, alguns alcançam dezenas de megabytes. Por
            padrão, todas as fontes embarcadas são comprimidas usando o esquema de compressão Flate,
            resultando, em média, em uma economia de espaço de 50%. Se, por alguma razão, você não
            quer comprimir o programa da fonte, você pode desabilitar isso através de uma opção:
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-5"><div class="info"><p><b>Example #8 Não comprimir uma fonte embarcada</b></p></div>
            

            <pre class="programlisting brush: php">
...
$font = Zend_Pdf_Font::fontWithPath(&#039;/path/to/someReallyBigFont.ttf&#039;,
                                    Zend_Pdf_Font::EMBED_DONT_COMPRESS);
...
</pre>

        </div>

        <p class="para">
            Finalmente, quando necessário, você pode combinar as opções de embarque usando o
            operador binário OR:
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-6"><div class="info"><p><b>Example #9 Combinando opções de embarque de fonte</b></p></div>
            

            <pre class="programlisting brush: php">
...
$font = Zend_Pdf_Font::fontWithPath(
            $someUserSelectedFontPath,
            (Zend_Pdf_Font::EMBED_SUPPRESS_EMBED_EXCEPTION |
            Zend_Pdf_Font::EMBED_DONT_COMPRESS));
...
</pre>

        </div>
    </div>

    <div class="section" id="zend.pdf.drawing.standard-fonts-limitations"><div class="info"><h1 class="title">Standard PDF fonts limitations</h1></div>
        

        <p class="para">
            Standard <acronym class="acronym">PDF</acronym> fonts use several single byte encodings internally
            (see <a href="http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference_1-7.pdf" class="link external">&raquo; PDF
                Reference, Sixth Edition, version 1.7</a> Appendix D for details). They are
            generally equal to Latin1 character set (except Symbol and ZapfDingbats fonts).
        </p>

        <p class="para">
            <span class="classname">Zend_Pdf</span> uses CP1252 (WinLatin1) for drawing text with standard
            fonts.
        </p>

        <p class="para">
            Text still can be provided in any other encoding, which must be specified if it differs
            from a current locale. Only WinLatin1 characters will be actually drawn.
        </p>

        <div class="example" id="zend.pdf.drawing.using-fonts.example-7"><div class="info"><p><b>Example #10 Combining font embedding options</b></p></div>
            

            <pre class="programlisting brush: php">
...
$font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_COURIER);
$pdfPage-&gt;setFont($font, 36)
        -&gt;drawText(&#039;Euro sign - €&#039;, 72, 720, &#039;UTF-8&#039;)
        -&gt;drawText(&#039;Text with umlauts - à è ì&#039;, 72, 650, &#039;UTF-8&#039;);
...
</pre>

        </div>
    </div>

    <div class="section" id="zend.pdf.drawing.extracting-fonts"><div class="info"><h1 class="title">Extracting fonts</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Pdf</span> module provides a possibility to extract fonts from
            loaded documents.
        </p>

        <p class="para">
            It may be useful for incremental document updates. Without this functionality you have
            to attach and possibly embed font into a document each time you want to update it.
        </p>

        <p class="para">
            <span class="classname">Zend_Pdf</span> and <span class="classname">Zend_Pdf_Page</span> objects provide
            special methods to extract all fonts mentioned within a document or a page:
        </p>

        <div class="example" id="zend.pdf.drawing.extracting-fonts.example-1"><div class="info"><p><b>Example #11 Extracting fonts from a loaded document</b></p></div>
            

            <pre class="programlisting brush: php">
...
$pdf = Zend_Pdf::load($documentPath);
...
// Get all document fonts
$fontList = $pdf-&gt;extractFonts();
$pdf-&gt;pages[] = ($page = $pdf-&gt;newPage(Zend_Pdf_Page::SIZE_A4));
$yPosition = 700;
foreach ($fontList as $font) {
    $page-&gt;setFont($font, 15);
    $fontName = $font-&gt;getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT,
                                   &#039;en&#039;,
                                   &#039;UTF-8&#039;);
    $page-&gt;drawText($fontName . &#039;: The quick brown fox jumps over the lazy dog&#039;,
                    100,
                    $yPosition,
                    &#039;UTF-8&#039;);
    $yPosition -= 30;
}
...
// Get fonts referenced within the first document page
$firstPage = reset($pdf-&gt;pages);
$firstPageFonts = $firstPage-&gt;extractFonts();
...
</pre>

        </div>

        <div class="example" id="zend.pdf.drawing.extracting-fonts.example-2"><div class="info"><p><b>Example #12 Extracting font from a loaded document by specifying font name</b></p></div>
            

            <pre class="programlisting brush: php">
...
$pdf = new Zend_Pdf();
...
$pdf-&gt;pages[] = ($page = $pdf-&gt;newPage(Zend_Pdf_Page::SIZE_A4));

$font = Zend_Pdf_Font::fontWithPath($fontPath);
$page-&gt;setFont($font, $fontSize);
$page-&gt;drawText($text, $x, $y);
...
// This font name should be stored somewhere...
$fontName = $font-&gt;getFontName(Zend_Pdf_Font::NAME_POSTSCRIPT,
                               &#039;en&#039;,
                               &#039;UTF-8&#039;);
...
$pdf-&gt;save($docPath);
...
</pre>


            <pre class="programlisting brush: php">
...
$pdf = Zend_Pdf::load($docPath);
...
$pdf-&gt;pages[] = ($page = $pdf-&gt;newPage(Zend_Pdf_Page::SIZE_A4));

/* $srcPage-&gt;extractFont($fontName) can also be used here */
$font = $pdf-&gt;extractFont($fontName);

$page-&gt;setFont($font, $fontSize);
$page-&gt;drawText($text, $x, $y);
...
$pdf-&gt;save($docPath, true /* incremental update mode */);
...
</pre>

        </div>

        <p class="para">
            Extracted fonts can be used in the place of any other font with the following
            limitations:

            <ul class="itemizedlist">
                <li class="listitem">
                    <p class="para">
                        Extracted font can be used only in the context of the document from which it
                        was extracted.
                    </p>
                </li>

                <li class="listitem">
                    <p class="para">
                        Possibly embedded font program is actually not extracted. So extracted font
                        can&#039;t provide correct font metrics and original font has to be used for text
                        width calculations:
                    </p>

                    <pre class="programlisting brush: php">
...
$font = $pdf-&gt;extractFont($fontName);
$originalFont = Zend_Pdf_Font::fontWithPath($fontPath);

$page-&gt;setFont($font /* use extracted font for drawing */, $fontSize);
$xPosition = $x;
for ($charIndex = 0; $charIndex &lt; strlen($text); $charIndex++) {
    $page-&gt;drawText($text[$charIndex], xPosition, $y);

    // Use original font for text width calculation
    $width = $originalFont-&gt;widthForGlyph(
                 $originalFont-&gt;glyphNumberForCharacter($text[$charIndex])
             );
    $xPosition += $width/$originalFont-&gt;getUnitsPerEm()*$fontSize;
}
...
</pre>

                </li>
            </ul>
        </p>
    </div>

    <div class="section" id="zend.pdf.drawing.image-drawing"><div class="info"><h1 class="title">Desenhando Imagens</h1></div>
        

        <p class="para">
            A classe <span class="classname">Zend_Pdf_Page</span> fornece o método drawImage() para o
            desenho de imagens:
        </p>

        <pre class="programlisting brush: php">
/**
 * Draw an image at the specified position on the page.
 *
 * @param Zend_Pdf_Resource_Image $image
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @return Zend_Pdf_Page
 */
public function drawImage(Zend_Pdf_Resource_Image $image, $x1, $y1, $x2, $y2);
</pre>


        <p class="para">
            Objetos de imagem devem ser criados com o método
             <span class="methodname">Zend_Pdf_Image::imageWithPath($filePath)</span> (imagens JPG, PNG e
            TIFF são suportadas agora):
        </p>

        <div class="example" id="zend.pdf.drawing.image-drawing.example-1"><div class="info"><p><b>Example #13 Desenhando imagens</b></p></div>
            

            <pre class="programlisting brush: php">
...
// load image
$image = Zend_Pdf_Image::imageWithPath(&#039;my_image.jpg&#039;);

$pdfPage-&gt;drawImage($image, 100, 100, 400, 300);
...
</pre>

        </div>

        <p class="para">
            <em class="emphasis">Importante! O suporte a JPEG requer que a extensão <acronym class="acronym">PHP</acronym> GD
                esteja configurada.</em> <em class="emphasis">Importante! O suporte a PNG requer que
                extensão ZLIB esteja configurada para trabalhar com imagens com canal
                Alpha.</em>
        </p>

        <p class="para">
            Consulte a documentação do <acronym class="acronym">PHP</acronym> para informações detalhadas (<a href="http://www.php.net/manual/en/ref.image.php" class="link external">&raquo; http://www.php.net/manual/en/ref.image.php</a>).
            (<a href="http://www.php.net/manual/en/ref.zlib.php" class="link external">&raquo; http://www.php.net/manual/en/ref.zlib.php</a>).
        </p>
    </div>

    <div class="section" id="zend.pdf.drawing.line-drawing-style"><div class="info"><h1 class="title">Estilo de desenho de linhas</h1></div>
        

        <p class="para">
            O desenho de linhas é definido pela largura, cor e padrão de traços. Todos estes
            parâmetros podem ser atribuídos pelos seguintes métodos da classe
            <span class="classname">Zend_Pdf_Page</span>:
        </p>

        <pre class="programlisting brush: php">
/** Set line color. */
public function setLineColor(Zend_Pdf_Color $color);

/** Set line width. */
public function setLineWidth(float $width);

/**
 * Set line dashing pattern.
 *
 * Pattern is an array of floats:
 *     array(on_length, off_length, on_length, off_length, ...)
 * Phase is shift from the beginning of line.
 *
 * @param array $pattern
 * @param array $phase
 * @return Zend_Pdf_Page
 */
public function setLineDashingPattern($pattern, $phase = 0);
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.fill-style"><div class="info"><h1 class="title">Estilo de preenchimento</h1></div>
        

        <p class="para">
            Os métodos  <span class="methodname">Zend_Pdf_Page::drawRectangle()</span>,
             <span class="methodname">Zend_Pdf_Page::drawPolygon()</span>,
             <span class="methodname">Zend_Pdf_Page::drawCircle()</span> e
             <span class="methodname">Zend_Pdf_Page::drawEllipse()</span> usam o argumento
            <var class="varname">$fillType</var> como um parâmetro opcional. Ele pode ser:
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">Zend_Pdf_Page::SHAPE_DRAW_STROKE - pincelamento</p>
            </li>

            <li class="listitem">
                <p class="para">Zend_Pdf_Page::SHAPE_DRAW_FILL - apenas preenchimento</p>
            </li>

            <li class="listitem">
                <p class="para">
                    Zend_Pdf_Page::SHAPE_DRAW_FILL_AND_STROKE - preenchimento e pincelamento
                    (comportamento padrão)
                </p>
            </li>
        </ul>

        <p class="para">
            Os métodos  <span class="methodname">Zend_Pdf_Page::drawPolygon()</span> também recebem um
            parâmetro adicional <var class="varname">$fillMethod</var>:
        </p>

        <ul class="itemizedlist">
            <li class="listitem">
                <p class="para">Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING (comportamento padrão)</p>

                <p class="para">
                    A <i class="citetitle">referência do PDF</i> descreve esta regra como:

                    <blockquote class="blockquote">
                        <p class="para">
                            A regra &quot;nonzero winding number&quot; determina se um dado ponto está dentro
                            de um caminho por conceitualmente desenhar um raio a partir desse ponto
                            até o infinito em qualquer direção e, em seguida, analisar os lugares
                            onde um segmento do caminho atravessa o raio. Começando a contagem do 0,
                            a regra acrescenta 1 cada vez que um segmento cruza o raio da esquerda
                            para a direita e subtrai 1 cada vez que um segmento cruza da direita
                            para a esquerda. Após a contagem de todos os cruzamentos, se o resultado
                            for 0 então o ponto está fora do caminho; de outra forma está dentro.
                            Nota: O método descrito não especifica o que fazer se um caminho
                            segmento coincide ou é tangente ao escolhido raio. Uma vez que a
                            direção do raio é arbitrária, a regra simplesmente escolhe um raio que
                            não encontra tais problemas de interseção. Para simples caminhos
                            convexos, a regra &quot;nonzero winding number&quot; define o interior e o
                            exterior como esperado intuitivamente. Os casos mais interessantes são
                            os envolvem caminhos complexos ou com auto-intersecção, como os que são
                            apresentados na Figura 4.10 (na Referência do <acronym class="acronym">PDF</acronym>).
                            Para um caminho que consiste em uma estrela de cinco pontas, desenhada
                            com cinco linhas retas conectadas se inter-seccionando, a regra
                            considera como sendo o interior toda a área delimitada pela estrela,
                            incluindo o pentágono no centro. Para um caminho composto de dois
                            círculos concêntricos, as áreas delimitadas por ambos os círculos são
                            consideradas como sendo o interior, desde que ambos os círculos sejam
                            desenhados na mesma direção. Se os círculos forem desenhados em direções
                            opostas, apenas a forma da &quot;rosquinha&quot; entre eles está no interior, de
                            acordo com a regra; o &quot;buraco da rosquinha&quot; está no exterior.
                        </p>
                    </blockquote>
                </p>
            </li>

            <li class="listitem">
                <p class="para">Zend_Pdf_Page::FILL_METHOD_EVEN_ODD</p>

                <p class="para">
                    A <i class="citetitle">referência do PDF</i> descreve esta regra como:

                    <blockquote class="blockquote">
                        <p class="para">
                            Uma alternativa à regra &quot;nonzero winding number&quot; é a regra &quot;even-odd&quot;.
                            Esta regra determina a &quot;interiorização&quot; de um ponto através do desenho
                            de um raio daquele ponto em qualquer direção e simplesmente contando a
                            quantidade de segmentos de caminhos que cruzam o raio, independentemente
                            da direção. Se a quantidade for ímpar, o ponto está no interior; se for
                            par está no exterior. Isto gera os mesmos resultados da regra &quot;nonzero
                            winding number&quot; para caminhos com formas simples, mas produz resultados
                            diferentes para os mais de forma mais complexa. A Figura 4.11 (na
                            Referência do <acronym class="acronym">PDF</acronym>) mostra os efeitos da aplicação da
                            regra &quot;even-odd&quot; para caminhos complexos. Para a estrela de cinco
                            pontas, a regra considera os pontos triangulares como estando no
                            interior do caminho, mas não o pentágono no centro. Para os dois
                            círculos concêntricos, apenas a forma da &quot;rosquinha&quot; entre os círculos é
                            considerada como interior, independentemente das direções em que eles
                            foram desenhados.
                        </p>
                    </blockquote>
                </p>
            </li>
        </ul>
    </div>

    <div class="section" id="zend.pdf.drawing.linear-transformations"><div class="info"><h1 class="title">Transformações Lineares</h1></div>
        

        <div class="section" id="zend.pdf.drawing.linear-transformations.rotations"><div class="info"><h1 class="title">Rotações</h1></div>
            

            <p class="para">
                A página <acronym class="acronym">PDF</acronym> pode ser rotacionada antes do uso de qualquer
                operação de desenho. Isso pode ser feito pelo método
                 <span class="methodname">Zend_Pdf_Page::rotate()</span>:
            </p>

            <pre class="programlisting brush: php">
/**
 * Rotate the page.
 *
 * @param float $x  - the X co-ordinate of rotation point
 * @param float $y  - the Y co-ordinate of rotation point
 * @param float $angle - rotation angle
 * @return Zend_Pdf_Page
 */
public function rotate($x, $y, $angle);
</pre>

        </div>

        <div class="section" id="zend.pdf.drawing.linear-transformations.scale"><div class="info"><h1 class="title">Starting from ZF 1.8, scaling</h1></div>
            

            <p class="para">
                Scaling transformation is provided by
                 <span class="methodname">Zend_Pdf_Page::scale()</span> method:
            </p>

            <pre class="programlisting brush: php">
/**
 * Scale coordination system.
 *
 * @param float $xScale - X dimention scale factor
 * @param float $yScale - Y dimention scale factor
 * @return Zend_Pdf_Page
 */
public function scale($xScale, $yScale);
</pre>

        </div>

        <div class="section" id="zend.pdf.drawing.linear-transformations.translate"><div class="info"><h1 class="title">Starting from ZF 1.8, translating</h1></div>
            

            <p class="para">
                Coordinate system shifting is performed by
                 <span class="methodname">Zend_Pdf_Page::translate()</span> method:
            </p>

            <pre class="programlisting brush: php">
/**
 * Translate coordination system.
 *
 * @param float $xShift - X coordinate shift
 * @param float $yShift - Y coordinate shift
 * @return Zend_Pdf_Page
 */
public function translate($xShift, $yShift);
</pre>

        </div>

        <div class="section" id="zend.pdf.drawing.linear-transformations.skew"><div class="info"><h1 class="title">Starting from ZF 1.8, skewing</h1></div>
            

            <p class="para">
                Page skewing can be done using  <span class="methodname">Zend_Pdf_Page::skew()</span>
                method:
            </p>

            <pre class="programlisting brush: php">
/**
 * Translate coordination system.
 *
 * @param float $x  - the X co-ordinate of axis skew point
 * @param float $y  - the Y co-ordinate of axis skew point
 * @param float $xAngle - X axis skew angle
 * @param float $yAngle - Y axis skew angle
 * @return Zend_Pdf_Page
 */
public function skew($x, $y, $xAngle, $yAngle);
</pre>

        </div>
    </div>

    <div class="section" id="zend.pdf.drawing.save-restore"><div class="info"><h1 class="title">Salvar/restaurar estados gráficos</h1></div>
        

        <p class="para">
            A qualquer hora os estados gráficos de uma página (fonte atual, tamanho da fonte, cor
            das linhas, cor de preenchimento, estilo de linha, rotação da página, e área de corte)
            podem ser salvos e então restaurados. Operações &quot;Salvar&quot; colocam os dados em uma pilha,
            as restaurações recuperam os estados da pilha.
        </p>

        <p class="para">
            Existem dois métodos na classe <span class="classname">Zend_Pdf_Page</span> para essas
            operações:
        </p>

        <pre class="programlisting brush: php">
/**
 * Save the graphics state of this page.
 * This takes a snapshot of the currently applied style, position,
 * clipping area and any rotation/translation/scaling that has been
 * applied.
 *
 * @return Zend_Pdf_Page
 */
public function saveGS();

/**
 * Restore the graphics state that was saved with the last call to
 * saveGS().
 *
 * @return Zend_Pdf_Page
 */
public function restoreGS();
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.clipping"><div class="info"><h1 class="title">Recorte de área de desenho</h1></div>
        

        <p class="para">
            O <acronym class="acronym">PDF</acronym> e o módulo <span class="classname">Zend_Pdf</span> dão suporte ao
            recorte de áreas de desenho. O recorte da área atual limita as regiões da página que
            serão afetadas por operações de pintura. Inicialmente é a página toda.
        </p>

        <p class="para">
            A classe <span class="classname">Zend_Pdf_Page</span> fornece um conjunto de métodos para
            operações de recorte.
        </p>

        <pre class="programlisting brush: php">
/**
 * Intersect current clipping area with a rectangle.
 *
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @return Zend_Pdf_Page
 */
public function clipRectangle($x1, $y1, $x2, $y2);
</pre>


        <pre class="programlisting brush: php">
/**
 * Intersect current clipping area with a polygon.
 *
 * @param array $x  - array of float (the X co-ordinates of the vertices)
 * @param array $y  - array of float (the Y co-ordinates of the vertices)
 * @param integer $fillMethod
 * @return Zend_Pdf_Page
 */
public function clipPolygon($x,
                            $y,
                            $fillMethod =
                                Zend_Pdf_Page::FILL_METHOD_NON_ZERO_WINDING);
</pre>


        <pre class="programlisting brush: php">
/**
 * Intersect current clipping area with a circle.
 *
 * @param float $x
 * @param float $y
 * @param float $radius
 * @param float $startAngle
 * @param float $endAngle
 * @return Zend_Pdf_Page
 */
public function clipCircle($x,
                           $y,
                           $radius,
                           $startAngle = null,
                           $endAngle = null);
</pre>


        <pre class="programlisting brush: php">
/**
 * Intersect current clipping area with an ellipse.
 *
 * Method signatures:
 * drawEllipse($x1, $y1, $x2, $y2);
 * drawEllipse($x1, $y1, $x2, $y2, $startAngle, $endAngle);
 *
 * @todo process special cases with $x2-$x1 == 0 or $y2-$y1 == 0
 *
 * @param float $x1
 * @param float $y1
 * @param float $x2
 * @param float $y2
 * @param float $startAngle
 * @param float $endAngle
 * @return Zend_Pdf_Page
 */
public function clipEllipse($x1,
                            $y1,
                            $x2,
                            $y2,
                            $startAngle = null,
                            $endAngle = null);
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.styles"><div class="info"><h1 class="title">Estilos</h1></div>
        

        <p class="para">
            A classe <span class="classname">Zend_Pdf_Style</span> fornece funcionalidades de estilo.
        </p>

        <p class="para">
            Estilos podem ser usados para o armazenamento de um conjunto de parâmetros do estado
            gráfico e aplicá-los à uma página <acronym class="acronym">PDF</acronym> com uma operação:
        </p>

        <pre class="programlisting brush: php">
/**
 * Set the style to use for future drawing operations on this page
 *
 * @param Zend_Pdf_Style $style
 * @return Zend_Pdf_Page
 */
public function setStyle(Zend_Pdf_Style $style);

/**
 * Return the style, applied to the page.
 *
 * @return Zend_Pdf_Style|null
 */
public function getStyle();
</pre>


        <p class="para">
            A classe <span class="classname">Zend_Pdf_Style</span> fornece um conjunto de métodos para
            configurar ou recuperar diferentes parâmetros do estado gráfico:
        </p>

        <pre class="programlisting brush: php">
/**
 * Set line color.
 *
 * @param Zend_Pdf_Color $color
 * @return Zend_Pdf_Page
 */
public function setLineColor(Zend_Pdf_Color $color);
</pre>


        <pre class="programlisting brush: php">
/**
 * Get line color.
 *
 * @return Zend_Pdf_Color|null
 */
public function getLineColor();
</pre>


        <pre class="programlisting brush: php">
/**
 * Set line width.
 *
 * @param float $width
 * @return Zend_Pdf_Page
 */
public function setLineWidth($width);
</pre>


        <pre class="programlisting brush: php">
/**
 * Get line width.
 *
 * @return float
 */
public function getLineWidth();
</pre>


        <pre class="programlisting brush: php">
/**
 * Set line dashing pattern
 *
 * @param array $pattern
 * @param float $phase
 * @return Zend_Pdf_Page
 */
public function setLineDashingPattern($pattern, $phase = 0);
</pre>


        <pre class="programlisting brush: php">
/**
 * Get line dashing pattern
 *
 * @return array
 */
public function getLineDashingPattern();
</pre>


        <pre class="programlisting brush: php">
/**
 * Get line dashing phase
 *
 * @return float
 */
public function getLineDashingPhase();
</pre>


        <pre class="programlisting brush: php">
/**
 * Set fill color.
 *
 * @param Zend_Pdf_Color $color
 * @return Zend_Pdf_Page
 */
public function setFillColor(Zend_Pdf_Color $color);
</pre>


        <pre class="programlisting brush: php">
/**
 * Get fill color.
 *
 * @return Zend_Pdf_Color|null
 */
public function getFillColor();
</pre>


        <pre class="programlisting brush: php">
/**
 * Set current font.
 *
 * @param Zend_Pdf_Resource_Font $font
 * @param float $fontSize
 * @return Zend_Pdf_Page
 */
public function setFont(Zend_Pdf_Resource_Font $font, $fontSize);
</pre>


        <pre class="programlisting brush: php">
/**
 * Modify current font size
 *
 * @param float $fontSize
 * @return Zend_Pdf_Page
 */
public function setFontSize($fontSize);
</pre>


        <pre class="programlisting brush: php">
/**
 * Get current font.
 *
 * @return Zend_Pdf_Resource_Font $font
 */
public function getFont();
</pre>


        <pre class="programlisting brush: php">
/**
 * Get current font size
 *
 * @return float $fontSize
 */
public function getFontSize();
</pre>

    </div>

    <div class="section" id="zend.pdf.drawing.alpha"><div class="info"><h1 class="title">Transparency</h1></div>
        

        <p class="para">
            <span class="classname">Zend_Pdf</span> module supports transparency handling.
        </p>

        <p class="para">
            Transparency may be set using  <span class="methodname">Zend_Pdf_Page::setAlpha()</span> method:
        </p>

        <pre class="programlisting brush: php">
/**
 * Set the transparency
 *
 * $alpha == 0  - transparent
 * $alpha == 1  - opaque
 *
 * Transparency modes, supported by PDF:
 * Normal (default), Multiply, Screen, Overlay, Darken, Lighten,
 * ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion
 *
 * @param float $alpha
 * @param string $mode
 * @throws Zend_Pdf_Exception
 * @return Zend_Pdf_Page
 */
public function setAlpha($alpha, $mode = &#039;Normal&#039;);
</pre>

    </div>
</div>
        <hr />

            <table width="100%">
                <tr>
                    <td width="25%" style="text-align: left;">
                    <a href="zend.pdf.pages.html">Trabalhando com P&aacute;ginas</a>
                    </td>

                    <td width="50%" style="text-align: center;">
                        <div class="up"><span class="up"><a href="zend.pdf.html">Zend_Pdf</a></span><br />
                        <span class="home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></span></div>
                    </td>

                    <td width="25%" style="text-align: right;">
                        <div class="next" style="text-align: right; float: right;"><a href="zend.pdf.interactive-features.html">Interactive Features</a></div>
                    </td>
                </tr>
            </table>
</td>
        <td style="font-size: smaller;" width="15%"> <style type="text/css">
#leftbar {
	float: left;
	width: 186px;
	padding: 5px;
	font-size: smaller;
}
ul.toc {
	margin: 0px 5px 5px 5px;
	padding: 0px;
}
ul.toc li {
	font-size: 85%;
	margin: 1px 0 1px 1px;
	padding: 1px 0 1px 11px;
	list-style-type: none;
	background-repeat: no-repeat;
	background-position: center left;
}
ul.toc li.header {
	font-size: 115%;
	padding: 5px 0px 5px 11px;
	border-bottom: 1px solid #cccccc;
	margin-bottom: 5px;
}
ul.toc li.active {
	font-weight: bold;
}
ul.toc li a {
	text-decoration: none;
}
ul.toc li a:hover {
	text-decoration: underline;
}
</style>
 <ul class="toc">
  <li class="header home"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="manual.html">Guia de Refer&ecirc;ncia do Programador</a></li>
  <li class="header up"><a href="reference.html">Refer&ecirc;ncia do Zend Framework</a></li>
  <li class="header up"><a href="zend.pdf.html">Zend_Pdf</a></li>
  <li><a href="zend.pdf.introduction.html">Introdu&ccedil;&atilde;o</a></li>
  <li><a href="zend.pdf.create.html">Criando e Carregando Documentos PDF</a></li>
  <li><a href="zend.pdf.save.html">Salvar Mudan&ccedil;as em Documentos PDF</a></li>
  <li><a href="zend.pdf.pages.html">Trabalhando com P&aacute;ginas</a></li>
  <li class="active"><a href="zend.pdf.drawing.html">Desenhando</a></li>
  <li><a href="zend.pdf.interactive-features.html">Interactive Features</a></li>
  <li><a href="zend.pdf.info.html">Informa&ccedil;&atilde;o do Documento e Metadados</a></li>
  <li><a href="zend.pdf.usage.html">Zend_Pdf module usage example</a></li>
 </ul>
 </td>
    </tr>
</table>

<script type="text/javascript" src="../js/shCore.js"></script>
<script type="text/javascript" src="../js/shAutoloader.js"></script>
<script type="text/javascript" src="../js/main.js"></script>

</body>
</html>